//-----------------------------------------------------------------------
// <copyright file="ISubscriptionSelectorPolicy.cs" company="iron9light">
//      Copyright (c) iron9light. All rights reserved.
// </copyright>
// <author>iron9light</author>
//-----------------------------------------------------------------------

namespace EventBrokerExtension
{
    using System.Collections.Generic;
    using System.Reflection;

    using Microsoft.Practices.ObjectBuilder2;

    /// <summary>
    /// An <see cref="IBuilderPolicy"/> that will examine the given
    /// types and return a sequence of <see cref="MethodInfo"/> objects
    /// that subscribe one or more event topics.
    /// </summary>
    public interface ISubscriptionSelectorPolicy : IBuilderPolicy
    {
        /// <summary>
        /// Return the sequence of subscription informations.
        /// </summary>
        /// <param name="context">Current build context.</param>
        /// <returns>Sequence of subscription informations.</returns>
        IEnumerable<SubscriptionInfo> GetSubscriptionInfos(IBuilderContext context);
    }
}